//
//  OAuthViewController.swift
//  阿酷微博
//
//  Created by co on 16/3/14.
//  Copyright © 2016年 王南侠. All rights reserved.
//

import UIKit

class OAuthViewController: UIViewController {
    
    private lazy var webView = UIWebView()
    
/// 视图生命周期
    override func loadView() {
        view = webView
        
        webView.delegate = self
        
        // 设置导航栏标题
        title = "登录新浪微博"
        
        navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont.systemFontOfSize(17)]
        
        navigationItem.leftBarButtonItem = UIBarButtonItem(
            title: "取消",
            style: .Plain,
            target: self,
            action: "clickCloseButton")
        
        navigationItem.rightBarButtonItem = UIBarButtonItem(
            title: "自动填充",
            style: .Plain,
            target: self,
            action: "clickAutoFillButton")
        
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor.whiteColor()
        
        // 加载授权的 URL
        
//        webView.loadRequest(NSURLRequest(URL: NetworkTools.sharedTools.oauthUrl))

        
        // 加载授权的 URL
        webView.loadRequest(NSURLRequest(URL: NetworkTools.sharedTools.oauthUrl))
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    @objc func clickCloseButton() {
        
        dismissViewControllerAnimated(true, completion: nil)
    }
    
    /// 自动填充用户信息
    @objc private func clickAutoFillButton() {
        
        let js = "document.getElementById('userId').value='18363804559';" +
        "document.getElementById('passwd').value='qqq123';"
        
        // 执行 js
        webView.stringByEvaluatingJavaScriptFromString(js)
    }


}

extension OAuthViewController:UIWebViewDelegate {
    
    /// 将要加载网络请求
    ///
    /// - parameter webView:        webView
    /// - parameter request:        request
    /// - parameter navigationType: navigationType 导航类型
    ///
    /// - returns 是否加重，通常在IOS 的代理方法中。如果返回BOOL ，通常返回YES 一切 OK 如果 返回NO不执行
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        // 1.如果URL不是 回调地址就继续加载页面
        if let urlString = request.URL?.absoluteString where !urlString.hasPrefix(NetworkTools.sharedTools.redirectUri) {
            
        return true
        
        }
        
        // 2. 否则判断回调参数 如果授权成功 URL 的的查询字符中包含 code 参数
        // query 是URL ？ 后面的缩影内容
        // 1> 判断 query 中是否有 code=
//        if let query = request.URL?.query where query.hasPrefix("code=") {
//            print("请求字符串" + query)
//            
//        // 2> 获得请求码
//        let code = query.substringFromIndex("code=".endIndex)
//            print("请求码 = \(code)")
//
//            
//        // 3> 发起网络请求做后续操作
//            
//            return false
//        }
        
        guard let query = request.URL?.query where query.hasPrefix("code=") else {
            print("取消授权")
            dismissViewControllerAnimated(true, completion: nil)
            
            return false
        }
        
        print("请求字符串" + query)
        
        // 2> 获得请求码
        let code = query.substringFromIndex("code=".endIndex)
        print("请求码 = \(code)")
        
        
        // 3> 发起网络请求做后续操作
        
        return false
        

    }
}
